Taken from upstream: https://github.com/pdoc3/pdoc/commit/4aa70de2221a34a3003a7e5f52a9b91965f0e359.patch.

From 4aa70de2221a34a3003a7e5f52a9b91965f0e359 Mon Sep 17 00:00:00 2001
From: Spencer Baugh <sbaugh@catern.com>
Date: Thu, 23 Sep 2021 09:00:25 -0400
Subject: [PATCH] TST: use explicit ClassWithNew instead of typing.Generic

typing.Generic doesn't have a __new__ method in 3.9.

Fixes https://github.com/pdoc3/pdoc/issues/355
---
 pdoc/test/__init__.py | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/pdoc/test/__init__.py b/pdoc/test/__init__.py
index e8c3d94..8b67ab7 100644
--- a/pdoc/test/__init__.py
+++ b/pdoc/test/__init__.py
@@ -1043,16 +1043,20 @@ class C2:
 
         self.assertEqual(pdoc.Class('C2', mod, C2).params(), ['a', 'b', 'c=None', '*', 'd=1', 'e'])
 
-        class G(typing.Generic[T]):
+        class ClassWithNew:
+            def __new__(self, arg):
+                pass
+
+        class G(ClassWithNew):
             def __init__(self, a, b, c=100):
                 pass
 
         self.assertEqual(pdoc.Class('G', mod, G).params(), ['a', 'b', 'c=100'])
 
-        class G2(typing.Generic[T]):
+        class G2(ClassWithNew):
             pass
 
-        self.assertEqual(pdoc.Class('G2', mod, G2).params(), ['*args', '**kwds'])
+        self.assertEqual(pdoc.Class('G2', mod, G2).params(), ['arg'])
 
     def test_url(self):
         mod = pdoc.Module(EXAMPLE_MODULE)
